package src.multithreading;

public class LamdaTest {
    // 静态内部类：
    static class MyLike2 implements Like {
        @Override
        public void iLike() {
            System.out.println("I like Lamda2. 静态内部类版");
        }
    }

    public static void main(String[] args) {
        // 实现类实例化接口
        MyLike like = new MyLike();
        like.iLike();

        // 实现静态内部类的调用
        MyLike2 myLike = new MyLike2();
        myLike.iLike();

        // 局部内部类
        class MyLike3 implements Like {
            @Override
            public void iLike() {
                System.out.println("I like Lamda3. 局部内部类");
            }
        }
        // 实例化局部内部类，并调用方法
        MyLike3 like3 = new MyLike3();
        like3.iLike();

        // 匿名内部类：没有类的名称，必须借助接口或父类
        Like myLike4 = new Like() {
            @Override
            public void iLike() {
                System.out.println("I like Lamda4. 匿名内部类");
            }
        };
        myLike4.iLike();

        //用lamda简化
        Like myLike5 = () ->{
            System.out.println("I like Lamda5.lamda简化类");
        };
        myLike5.iLike();
    }
}

// 定义一个函数式接口
interface Like {
    void iLike();
}

// 实现类
class MyLike implements Like {
    @Override
    public void iLike() {
        System.out.println("I like Lamda");
    }
}
